home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 42 / Amiga Format AFCD42 (Issue 126, Aug 1999).iso / -serious- / programming / other / ioblixdevkit / c / examples / querychiplist.c < prev    next >
C/C++ Source or Header  |  1999-05-14  |  2KB  |  68 lines

  1. /*
  2.     This program is meant to demonstrate how to get all necessary information
  3.     about all available chips on an IOBlix board in a system-friendly manner
  4. */
  5.  
  6. #include <exec/exec.h>
  7. #include <resources/ioblix.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10.  
  11. #include <proto/exec.h>
  12. #include <proto/ioblix.h>
  13.  
  14.  
  15. UBYTE __aligned myname[]="QueryChipList 37.2 "__AMIGADATE__;
  16. UBYTE __aligned version[]="$VER: QueryChipList 37.2 "__AMIGADATE__;
  17. UBYTE __aligned copyright[]="(C)opyright 1998,1999 by Thore Böckelmann and RBM Computertechnik. All rights reserved";
  18.  
  19. struct IOBlixResource *IOBlixBase = NULL;
  20.  
  21. void main(void)
  22. {
  23.     struct List *chipList;
  24.     struct IOBlixChipNode *chipNode;
  25.     ULONG uartCnt, ppCnt, fifoCnt, otherCnt;
  26.  
  27.     IOBlixBase = (struct IOBlixResource *)OpenResource(IOBLIXRESNAME);
  28.     if (IOBlixBase) {
  29.         /* try to get a copy of the global chip list */
  30.         chipList = AllocChipList();
  31.         if (chipList) {
  32.             uartCnt = ppCnt = fifoCnt = otherCnt = 0;
  33.             /* let's count all the available chips in the system */
  34.             for (chipNode = (struct IOBlixChipNode *)chipList->lh_Head; chipNode->icn_Node.ln_Succ; chipNode = (struct IOBlixChipNode *)chipNode->icn_Node.ln_Succ) {
  35.                 switch (chipNode->icn_Type) {
  36.                     case ICT_Z2_SERIAL_CHIP:
  37.                     case ICT_CP_SERIAL_CHIP:
  38.                         uartCnt++;
  39.                         break;
  40.                     case ICT_Z2_PARALLEL_CHIP:
  41.                     case ICT_CP_PARALLEL_CHIP:
  42.                         ppCnt++;
  43.                         break;
  44.                     case ICT_Z2_EXTFIFO_CHIP:
  45.                         fifoCnt++;
  46.                         break;
  47.                     default:
  48.                         otherCnt++;
  49.                         break;
  50.                 }
  51.             }
  52.             printf("There are\n" \
  53.                    "\t%2ld UARTs\n" \
  54.                    "\t%2ld parallel ports\n" \
  55.                    "\t%2ld external FIFOs\n" \
  56.                    "\t%2ld other chips\n" \
  57.                    "in your system.\n", uartCnt, ppCnt, fifoCnt, otherCnt);
  58.             /* free the list again */
  59.             FreeChipList(chipList);
  60.         } else {
  61.             printf("Can't get a copy of the chip list!\n");
  62.         }
  63.     } else {
  64.         printf("Can't find ioblix.resource. Please run SetupIOBlix\n");
  65.     }
  66. }
  67.  
  68.